home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / pas_all.zip / TI175.ASC < prev    next >
Text File  |  1992-09-02  |  26KB  |  1,057 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  10.   VERSION : 1.05A
  11.        OS : PC-DOS
  12.      DATE : July 8, 1986                                PAGE : 1/16
  13.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  14.  
  15.  
  16.  
  17.  
  18.   This handout contains updates for the following:
  19.  
  20.   RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP      PAGE 1
  21.  
  22.   WORLD COORDINATES UPDATE                            PAGE 7
  23.  
  24.   BAR CHART MODULE                                    PAGE 9
  25.  
  26.   POLYGON DRAWING MODULE                              PAGE 13
  27.  
  28.   WINDOW MOVE UPDATE                                  PAGE 18
  29.  
  30.            RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP
  31.  
  32.   This  patch eliminates runtime error 92 in the WindowX,  WindowY,  and
  33.   Clip routines.
  34.  
  35.   The following routines are found in the file called "KERNEL.SYS".
  36.  
  37.   Change the WindowX function to read as follows:
  38.  
  39.   function WindowX(x:real):integer;
  40.   var
  41.     Temp : real;
  42.   begin
  43.     Temp := AxGlb + BxGlb * x;
  44.     if Temp > MaxInt then
  45.       WindowX := MaxInt
  46.     else if Temp < $8001 then
  47.       WindowX := $8001
  48.     else
  49.       WindowX := trunc(Temp);
  50.   end;
  51.  
  52.  
  53.   Change the WindowY funtion to read as follows:
  54.  
  55.   function WindowY(y:real):integer;
  56.   var
  57.     Temp : real;
  58.   begin
  59.     Temp := AyGlb + ByGlb * y;
  60.     if Temp > MaxInt then
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  76.   VERSION : 1.05A
  77.        OS : PC-DOS
  78.      DATE : July 8, 1986                                PAGE : 2/16
  79.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  80.  
  81.  
  82.  
  83.  
  84.       WindowY := MaxInt
  85.     else if Temp < $8001 then
  86.       WindowY := $8001
  87.     else
  88.       WindowY := trunc(Temp);
  89.   end;
  90.  
  91.   RUN-TIME ERROR IN WINDOWX, WINDOWY AND CLIP, Continued:
  92.  
  93.   Change the Clip function to read as follows:
  94.  
  95.   function clip(var x1,y1,x2,y2:integer):boolean;
  96.  
  97.     var ix1,iy1,ix2,iy2,dummy,X1Loc,X2Loc:integer;
  98.         ClipLoc:boolean;
  99.         Temp : real;
  100.  
  101.     function inside(x,xx1,xx2:integer):integer;
  102.       begin
  103.         inside:=0;
  104.         if x<xx1 then inside:=-1
  105.         else if x>xx2 then inside:=1;
  106.       end;
  107.  
  108.     begin
  109.       clip:=true;
  110.       ClipLoc:=true;
  111.       if ClippingGlb then
  112.        begin
  113.         if HatchGlb then
  114.          begin
  115.           X1Loc:=X1RefGlb;
  116.           X2Loc:=X2RefGlb;
  117.          end
  118.         else
  119.          begin
  120.           X1Loc:=X1RefGlb shl 3;
  121.           X2Loc:=X2RefGlb shl 3 +7;
  122.          end;
  123.  
  124.   RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP, Continued:
  125.  
  126.         ix1:=inside(x1,X1Loc,X2Loc);
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  142.   VERSION : 1.05A
  143.        OS : PC-DOS
  144.      DATE : July 8, 1986                                PAGE : 3/16
  145.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  146.  
  147.  
  148.  
  149.  
  150.         iy1:=inside(y1,Y1RefGlb,Y2RefGlb);
  151.         ix2:=inside(x2,X1Loc,X2Loc);
  152.         iy2:=inside(y2,Y1RefGlb,Y2RefGlb);
  153.         if (ix1 or ix2 or iy1 or iy2)<>0 then
  154.          begin
  155.           if x1<>x2 then
  156.            begin
  157.             if ix1<>0 then
  158.              begin
  159.               if ix1<0 then dummy:=X1Loc else dummy:=X2Loc;
  160.               if y2<>y1 then
  161.               begin                             { Changes start here }
  162.          Temp := (y2-y1)/(x2-x1)*(dummy-x1);
  163.                 if Temp > MaxInt then
  164.                   Temp := MaxInt
  165.                 else if Temp < $8001 then
  166.                   Temp := $8001;
  167.                 y1:=y1+trunc(Temp);
  168.               end;                                { Changes end here }
  169.               x1:=dummy;
  170.              end;
  171.             if (ix2<>0) and (x1<>x2) then
  172.              begin
  173.               if ix2<0 then dummy:=X1Loc else dummy:=X2Loc;
  174.               if y2<>y1 then
  175.               begin                             { Changes start here }
  176.                 Temp := (y2-y1)/(x2-x1)*(dummy-x1);
  177.                 if Temp > MaxInt then
  178.                   Temp := MaxInt
  179.                 else if Temp < $8001 then
  180.                   Temp := $8001;
  181.                 y2:=y1+trunc(Temp);
  182.               end;                                { Changes end here }
  183.               x2:=dummy;
  184.              end;
  185.  
  186.   RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP, Continued:
  187.  
  188.             iy1:=inside(y1,Y1RefGlb,Y2RefGlb);
  189.             iy2:=inside(y2,Y1RefGlb,Y2RefGlb);
  190.            end;
  191.           if y1<>y2 then
  192.            begin
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  208.   VERSION : 1.05A
  209.        OS : PC-DOS
  210.      DATE : July 8, 1986                                PAGE : 4/16
  211.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  212.  
  213.  
  214.  
  215.  
  216.             if iy1<>0 then
  217.              begin
  218.               if iy1<0 then dummy:=Y1RefGlb else dummy:=Y2RefGlb;
  219.               if x1<>x2 then
  220.               begin                             { Changes start here }
  221.                 Temp := (x2-x1)/(y2-y1)*(dummy-y1);
  222.                 if Temp > MaxInt then
  223.                   Temp := MaxInt
  224.                 else if Temp < $8001 then
  225.                   Temp := $8001;
  226.                 x1:=x1+trunc(Temp);
  227.               end;                                { Changes end here }
  228.               y1:=dummy;
  229.              end;
  230.             if iy2<>0 then
  231.              begin
  232.               if iy2<0 then dummy:=Y1RefGlb else dummy:=Y2RefGlb;
  233.               if x1<>x2 then
  234.               begin                             { Changes start here }
  235.                 Temp := (x2-x1)/(y2-y1)*(dummy-y1);
  236.                 if Temp > MaxInt then
  237.                   Temp := MaxInt
  238.                 else if Temp < $8001 then
  239.                   Temp := $8001;
  240.                 x2:=x1+trunc(Temp);
  241.               end;                                { Changes end here }
  242.               y2:=dummy;
  243.              end;
  244.            end;
  245.  
  246.   RUN-TIME ERROR 92 IN WINDOWX, WINDOWY AND CLIP, Continued:
  247.  
  248.           iy1:=inside(y1,Y1RefGlb,Y2RefGlb);
  249.           iy2:=inside(y2,Y1RefGlb,Y2RefGlb);
  250.           if (iy1<>0) or (iy2<>0) then ClipLoc:=false;
  251.           if ClipLoc then
  252.            begin
  253.             ix1:=inside(x1,X1Loc,X2Loc);
  254.             ix2:=inside(x2,X1Loc,X2Loc);
  255.             if (ix2<>0) or (ix1<>0) then ClipLoc:=false;
  256.            end;
  257.           clip:=ClipLoc;
  258.          end;
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  274.   VERSION : 1.05A
  275.        OS : PC-DOS
  276.      DATE : July 8, 1986                                PAGE : 5/16
  277.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  278.  
  279.  
  280.  
  281.  
  282.        end;
  283.     end;
  284.  
  285.  
  286.                               WORLD COORDINATES
  287.  
  288.   In  Turbo  Graphix  Toolbox version 1.05A,  the Y  coordinates  are
  289.   flipped, positive to negative.   The following patches will reverse  the
  290.   direction of increasing positive Y coordinates.
  291.  
  292.   In KERNEL.SYS change the procedure DefineWorld to read:
  293.  
  294.   procedure DefineWorld(i:integer; X_1,Y_1,X_2,Y_2:real);
  295.     begin
  296.       if ((X_1<>X_2) and (Y_1<>Y_2)) and (i in [1..MaxWorldsGlb]) then
  297.         with world[i] do
  298.          begin
  299.           x1:=X_1;y1:=Y_1;x2:=X_2;y2:=Y_2;
  300.           if i>MaxWorldGlb then MaxWorldGlb:=i;
  301.          end
  302.       else if i in [1..MaxWorldsGlb] then error(1,3)
  303.       else error(1,2);
  304.     end;
  305.  
  306.   In KERNEL.SYS change the procedure ReDefineWindow to read:
  307.  
  308.   procedure ReDefineWindow(i,X_1,Y_1,X_2,Y_2:integer);
  309.     begin
  310.       if (i in [1..MaxWindowsGlb]) and (X_1<=X_2) and (Y_1<=Y_2) and
  311.          (X_1>=0) and (X_2<=XScreenMaxGlb) and (Y_1>=0) and (Y_2<=YMaxGlb)
  312.          then
  313.         with window[i] do
  314.          begin
  315.           x1:=X_1;
  316.           y1:=Y_1;
  317.           x2:=X_2;
  318.           y2:=Y_2;
  319.           if i>MaxWindowGlb then MaxWindowGlb:=i;
  320.          end
  321.       else if i in [1..MaxWindowsGlb] then error(3,3)
  322.       else error(3,2);
  323.     end;
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  340.   VERSION : 1.05A
  341.        OS : PC-DOS
  342.      DATE : July 8, 1986                                PAGE : 6/16
  343.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  344.  
  345.  
  346.  
  347.  
  348.   WORLD COORDINATES, Continued:
  349.  
  350.   Change the File called FINDWRLD.HGH to read:
  351.  
  352.   procedure FindWorld(i:integer;
  353.                       A:PlotArray;
  354.                       NPoints:integer;
  355.                       ScaleX,ScaleY:real);
  356.     var XMax,YMax,XMin,YMin:real;
  357.         j:integer;
  358.  
  359.       xmid, ymid, xdiff, ydiff : real;
  360.     begin
  361.       NPoints:=abs(NPoints);
  362.       if NPoints>=2 then
  363.         if i in [1..MaxWorldsGlb] then
  364.          begin
  365.           XMax:=A[1,1];
  366.           YMax:=A[1,2];
  367.           XMin:=XMax;
  368.           YMin:=YMax;
  369.           for j:=2 to NPoints do
  370.            begin
  371.             if A[j,1]>XMax then XMax:=A[j,1]
  372.             else if A[j,1]<XMin then XMin:=A[j,1];
  373.             if A[j,2]>YMax then YMax:=A[j,2]
  374.             else if A[j,2]<YMin then YMin:=A[j,2];
  375.            end;
  376.           ScaleX:=abs(ScaleX);
  377.           ScaleY:=abs(ScaleY);
  378.           xdiff := xmax - xmin;
  379.           xmid := (xmax + xmin) * 0.5;
  380.           xmax := xmid + scalex * 0.5 * xdiff;
  381.           xmin := xmid - scalex * 0.5 * xdiff;
  382.           ydiff := ymax - ymin;
  383.           ymid := (ymax + ymin) * 0.5;
  384.           ymax := ymid + scaley * 0.5 * ydiff;
  385.           ymin := ymid - scaley * 0.5 * ydiff;
  386.           DefineWorld(i,XMin,YMin,XMax,YMax);
  387.           SelectWorld(i);
  388.          end
  389.         else error(7,2)
  390.       else error(7,4);
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  406.   VERSION : 1.05A
  407.        OS : PC-DOS
  408.      DATE : July 8, 1986                                PAGE : 7/16
  409.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  410.  
  411.  
  412.  
  413.  
  414.     end;
  415.  
  416.   MAKE THE FOLLOWING MODIFICATION TO THE FILE "HISTOGRM.HGH."
  417.  
  418.   (***********************************************************)
  419.   (*                                                         *)
  420.   (*                TURBO GRAPHIX version 1.06A              *)
  421.   (*                                                         *)
  422.   (*                     Bar chart module                    *)
  423.   (*                   Module version 1.06A                  *)
  424.   (*                                                         *)
  425.   (*                  Copyright (C) 1985 by                  *)
  426.   (*                  BORLAND International                  *)
  427.   (*                                                         *)
  428.   (***********************************************************)
  429.  
  430.   procedure DrawHistogram(A :PlotArray; NPoints : integer;
  431.                           Hatching : boolean; HatchStyle : integer);
  432.  
  433.   var
  434.     X1, X2, Y2, NPixels, Delta, NDiff, YRef, LineStyleLoc, I : integer;
  435.     Fract, S, Y, YAxis : real;
  436.     DirectModeLoc, Negative : boolean;
  437.     Wtemp : WindowType;
  438.     X1Loc, Y1Loc, X2Loc, Y2Loc : integer;
  439.  
  440.   function Balance : integer;
  441.   begin
  442.     Balance := 0;
  443.     S := S + Fract;
  444.     if S >= 0.0 then
  445.     begin
  446.       S := S - 1.0;
  447.       Balance := 1;
  448.     end;
  449.   end; { Balance }
  450.  
  451.   begin { DrawHistogram }
  452.     if abs(NPoints) >= 2 then
  453.       begin
  454.         X1Loc := X1Glb;
  455.         Y1Loc := Y1Glb;
  456.         X2Loc := X2Glb;
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  472.   VERSION : 1.05A
  473.        OS : PC-DOS
  474.      DATE : July 8, 1986                                PAGE : 8/16
  475.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  476.  
  477.  
  478.  
  479.  
  480.         Y2Loc := Y2Glb;
  481.         LineStyleLoc := LinestyleGlb;
  482.         SetLineStyle(0);
  483.         if AxisGlb then
  484.  
  485.   BAR CHART MODULE, CONTINUED
  486.  
  487.           begin
  488.           Wtemp := Window[WindowNdxGlb];
  489.           ReDefineWindow(WindowNdxGlb,   X1RefGlb   +  4  +  X1Glb,
  490.             Y1RefGlb  +  6 +  Y1Glb,  X2RefGlb  - 2  - X2Glb, Y2RefGlb
  491.             - 14 - Y2Glb);
  492.           SelectWindow(WindowNdxGlb);
  493.           AxisGlb := true;
  494.         end;
  495.         DirectModeLoc := DirectModeGlb;
  496.         DirectModeGlb := true;
  497.         Negative := NPoints < 0;
  498.         NPoints := abs(NPoints);
  499.         NPixels := (X2RefGlb - X1RefGlb) shl 3 + 7;
  500.         Delta := NPixels div NPoints;
  501.         NDiff := NPixels - Delta * NPoints;
  502.         Fract := NDiff / NPoints;
  503.         S := -Fract;
  504.         X1 := X1RefGlb shl 3;
  505.         YRef := trunc(Y2RefGlb + Y1RefGlb - AyGlb);
  506.         if Negative then
  507.           DrawStraight(X1, X2RefGlb shl 3 + 7, YRef);
  508.         YAxis := Y1RefGlb;
  509.         if BYGlb > 0 then
  510.           YAxis := Y2RefGlb;
  511.         for I := 1 to NPoints do
  512.         begin
  513.           X2 := X1 + Delta + Balance;
  514.           Y := A[I, 2];
  515.           if not Negative then
  516.             Y := abs(Y);
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  538.   VERSION : 1.05A
  539.        OS : PC-DOS
  540.      DATE : July 8, 1986                                PAGE : 9/16
  541.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  542.  
  543.  
  544.  
  545.  
  546.                  <-----------------------------------|
  547.           if AxisGlb then                            |
  548.             Y2 := trunc(AyGlb + ByGlb * Y)           |
  549.           else                                       |-{ DELETE }
  550.             Y2 := trunc((AyGlb + ByGlb * Y) * 0.99); | { THIS }
  551.           Y2 := Y2RefGlb + Y1RefGlb - Y2;            | { BLOCK }
  552.                  <-----------------------------------|
  553.  
  554.           { ADD THE FOLLOWING LINE }
  555.           Y2 := Y2RefGlb + Y1RefGlb - (trunc(AyGlb + ByGlb * Y));
  556.  
  557.   BAR CHART MODULE, CONTINUED
  558.  
  559.           if not Negative then
  560.             begin
  561.               DrawLine(X1, YAxis, X1, Y2);
  562.               DrawStraight(X1, X2, Y2);
  563.               DrawLine(X2, Y2, X2, YAxis);
  564.               if Hatching then
  565.                 if Odd(I) then
  566.                   Hatch(X1, Y2, X2, YAxis, HatchStyle)
  567.                 else
  568.                   Hatch(X1, Y2, X2, YAxis, -HatchStyle);
  569.             end
  570.           else
  571.             begin
  572.               DrawLine(X1, YRef, X1, Y2);
  573.               DrawStraight(X1, X2, Y2);
  574.               DrawLine(X2, Y2, X2, YRef);
  575.               if Hatching then
  576.                 if YRef - Y2 < 0 then
  577.                   if Odd(I) then
  578.                     Hatch(X1, YRef, X2, Y2, HatchStyle)
  579.                   else
  580.                     Hatch(X1, YRef, X2, Y2, -HatchStyle)
  581.                 else
  582.                   if Odd(I) then
  583.                     Hatch(X1, Y2, X2,YRef, HatchStyle)
  584.                   else
  585.                     Hatch(X1, Y2, X2, YRef, -HatchStyle);
  586.             end;
  587.           X1 := X2;
  588.         end;
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  604.   VERSION : 1.05A
  605.        OS : PC-DOS
  606.      DATE : July 8, 1986                               PAGE : 10/16
  607.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  608.  
  609.  
  610.  
  611.  
  612.         if AxisGlb then
  613.         begin
  614.           Window[WindowNdxGlb] := Wtemp;
  615.           SelectWindow(WindowNdxGlb);
  616.           X1Glb := X1Loc;
  617.           Y1Glb := Y1Loc;
  618.           X2Glb := X2Loc;
  619.           Y2Glb := Y2Loc;
  620.           AxisGlb := false;
  621.         end;
  622.         DirectModeGlb := DirectModeLoc;
  623.         SetLineStyle(LineStyleLoc);
  624.       end
  625.     else
  626.       Error(19, 4);
  627.   end; { DrawHistogram }
  628.  
  629.   ADD  THE  FOLLOWING VARIABLE TO  THE  FILE  "TYPEDEF.SYS."
  630.  
  631.  
  632.   WorldNdxGlb : integer;
  633.  
  634.   { IN THE FILE CALLED "KERNEL.SYS" MODIFY THE PROCEDURE CALLED,
  635.   "SelectWorld" as follows. }
  636.  
  637.   procedure SelectWorld(I : integer);
  638.   begin
  639.     if (I in [1..MaxWorldGlb]) then
  640.       with World[I] do
  641.       begin
  642.         WorldNdxGlb := I; <----------------{ ADD THIS LINE }
  643.         X1WldGlb := X1;
  644.         Y1WldGlb := Y1;
  645.         X2WldGlb := X2;
  646.         Y2WldGlb := Y2;
  647.       end
  648.     else
  649.       Error(2, 2);
  650.   end; { SelectWorld }
  651.  
  652.   IN   THE   FILE   CALLED   "POLYGON.HGH"   MAKE   THE   FOLLOWING
  653.   MODIFICATIONS.
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  670.   VERSION : 1.05A
  671.        OS : PC-DOS
  672.      DATE : July 8, 1986                               PAGE : 11/16
  673.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  674.  
  675.  
  676.  
  677.  
  678.        (***********************************************************)
  679.        (*                                                         *)
  680.        (*                TURBO GRAPHIX version 1.06A              *)
  681.        (*                                                         *)
  682.        (*                  Polygon drawing module                 *)
  683.        (*                   Module version 1.06A                  *)
  684.        (*                                                         *)
  685.        (*                  Copyright (C) 1985 by                  *)
  686.        (*                  BORLAND International                  *)
  687.        (*                                                         *)
  688.        (***********************************************************)
  689.  
  690.   procedure DrawPolygon(A :  PlotArray;I0,  NPoints,  Line,  Scale,
  691.   Lines : integer);
  692.   var
  693.     I, X1, X2, Y1, Y2, XOffset, YOffset,
  694.     X1RefLoc, Y1RefLoc, X2RefLoc, Y2RefLoc,
  695.     DeltaY, XOs1, XOs2, YOs1, YOs2 : integer;
  696.     AutoClip, DirectModeLoc, PlotLine, PlotSymbol : boolean;
  697.     X1Loc, Y1Loc, X2Loc, Y2Loc : integer;
  698.     Temp : real; <-------------|
  699.     Flipped  :  boolean;  <----|----------{ ADD THESE TWO VARIABLES }
  700.  
  701.   procedure DrawPointClipped(X, Y : integer);
  702.   begin
  703.     if (X1 > X1RefGlb shl 3) and (X2 < X2RefGlb shl 3 + 7) then
  704.       if (Y1 > Y1RefGlb) and (Y2 < Y2RefGlb) then
  705.         DP(X, Y);
  706.   end; { DrawPointClipped }
  707.  
  708.   procedure DrawItem(X, Y : integer);
  709.   var
  710.     LineStyleLoc : integer;
  711.   begin
  712.     LineStyleLoc := LineStyleGlb;
  713.     SetLineStyle(0);
  714.  
  715.   POLYGON DRAWING MODULE, CONTINUED
  716.  
  717.       case Line of
  718.       2    : DrawCrossDiag(X, Y, Scale);
  719.       3,  4  :  DrawSquareC(X - Scale,  Y + Scale,  X + Scale,  Y -
  720.   Scale, (Line = 4));
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  736.   VERSION : 1.05A
  737.        OS : PC-DOS
  738.      DATE : July 8, 1986                               PAGE : 12/16
  739.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  740.  
  741.  
  742.  
  743.  
  744.       5    : DrawDiamond(X, Y, Scale + 1);
  745.       6    : DrawWye(X, Y, Scale + 1);
  746.       1    : DrawCross(X, Y, Scale);
  747.       8    : DrawCircleDirect(X, Y, Scale + 1, false);
  748.       9    : begin
  749.                PlotLine := false;
  750.                if AutoClip then
  751.                  DrawPointClipped(X, Y)
  752.                else
  753.                  DP(X, Y);
  754.              end;
  755.        7   : DrawStar(X, Y, Scale);
  756.      end;
  757.      SetLineStyle(LineStyleLoc);
  758.    end; { DrawItem }
  759.  
  760.   begin { DrawPolygon }
  761.                      <-------------------|
  762.     if not AxisGlb then                  |
  763.       begin                              |
  764.         with World[WorldNdxGlb] do       |
  765.         begin                            |
  766.           Temp := Y1;                    |
  767.           Y1 := Y2;                      |
  768.           Y2 := Temp;                    |------{ ADD THIS BLOCK }
  769.         end;                             |
  770.         SelectWorld(WorldNdxGlb);        |
  771.         SelectWindow(WindowNdxGlb);      |
  772.         Flipped := true;                 |
  773.       end                                |
  774.     else                                 |
  775.       Flipped := false;                  |
  776.                      <-------------------|
  777.     if abs(NPoints - I0) >= 2 then
  778.     begin
  779.       X1Loc := X1Glb;
  780.       Y1Loc := Y1Glb;
  781.       X2Loc := X2Glb;
  782.       Y2Loc := Y2Glb;
  783.       DirectModeLoc := DirectModeGlb;
  784.       DirectModeGlb := true;
  785.       AutoClip := (NPoints < 0);
  786.       NPoints := abs(NPoints);
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  802.   VERSION : 1.05A
  803.        OS : PC-DOS
  804.      DATE : July 8, 1986                               PAGE : 13/16
  805.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  806.  
  807.  
  808.  
  809.  
  810.   POLYGON DRAWING MODULE, CONTINUED
  811.       XOs1 := 1;
  812.       XOs2 := 1;
  813.  
  814.       YOs1 := 6;
  815.       YOs2 := 6;
  816.       if AxisGlb then
  817.       begin
  818.         XOs1 := 4;
  819.         XOs2 := 2;
  820.         YOs1 := 6;
  821.         YOs2 := 14;
  822.         if  (((X2RefGlb  + 7 - XOs2 - X1RefGlb + XOs1)  >  (XOs1  +
  823.                XOs2)  shl 1) and (Y2RefGlb - YOs2 - Y1RefGlb + YOs1  >
  824.                (YOs1 + YOs2) shl 1)) then
  825.         begin
  826.           X1RefLoc := X1RefGlb;
  827.           X1 := X1RefGlb + XOs1 + X1Glb;
  828.           Y1RefLoc := Y1RefGlb;
  829.           Y1 := Y1RefGlb + YOs1 + Y1Glb;
  830.           X2RefLoc := X2RefGlb;
  831.           X2 := X2RefGlb - XOs2 - X2Glb;
  832.           Y2RefLoc := Y2RefGlb;
  833.           Y2 := Y2RefGlb - YOs2 - Y2Glb;
  834.           ReDefineWindow(WindowNdxGlb, X1, Y1, X2, Y2);
  835.           SelectWindow(WindowNdxGlb);
  836.           AxisGlb := true;
  837.         end;
  838.       end;
  839.       PlotLine := (Line >= 0);
  840.       PlotSymbol := (Line <> 0);
  841.       Line := abs(Line);
  842.       Scale := abs(Scale);
  843.       if Lines < 0 then
  844.         DeltaY := Trunc(1.0 / (abs(Y1WldGlb) + abs(Y2WldGlb)) *
  845.                                abs(Y1WldGlb) * abs(Y2RefGlb -
  846.                                Y1RefGlb)) + 1
  847.       else
  848.         DeltaY := 0;
  849.       if (NPoints < 2) and MessageGlb then
  850.         Writeln('<DrawPolygon>: too few data pairs  -> (NPoints) >= 2')
  851.       else
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  868.   VERSION : 1.05A
  869.        OS : PC-DOS
  870.      DATE : July 8, 1986                               PAGE : 14/16
  871.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  872.  
  873.  
  874.  
  875.  
  876.           begin
  877.           X1 := WindowX(A[I0, 1]);
  878.           Y1 := Y2RefGlb + Y1RefGlb - WindowY(A[I0, 2]);
  879.           DrawItem(X1, Y1);
  880.           if Abs(Lines) = 1 then
  881.  
  882.   POLYGON DRAWING MODULE, CONTINUED
  883.  
  884.           if AutoClip then
  885.               DrawLineClipped(X1, Y2RefGlb - DeltaY, X1, Y1)
  886.             else
  887.               DrawLine(X1, Y2RefGlb - DeltaY, X1, Y1);
  888.           for I:= I0 + 1 to NPoints do
  889.           begin
  890.             X2 := WindowX(A[I, 1]);
  891.             Y2 := Y2RefGlb + Y1RefGlb - WindowY(A[I, 2]);
  892.             DrawItem(X2, Y2);
  893.             if Abs(Lines) = 1 then
  894.               if AutoClip then
  895.                 DrawLineClipped(X2, Y2RefGlb - DeltaY, X2, Y2)
  896.               else
  897.                 DrawLine(X2, Y2RefGlb - DeltaY, X2, Y2);
  898.             if PlotLine then
  899.               if AutoClip then
  900.                 DrawLineClipped(X1, Y1, X2, Y2)
  901.               else
  902.                 DrawLine(X1, Y1, X2, Y2);
  903.             X1 := X2;
  904.             Y1 := Y2;
  905.           end;
  906.         end;
  907.       if AxisGlb then
  908.       begin
  909.         ReDefineWindow(WindowNdxGlb,  X1RefLoc, Y1RefLoc, X2RefLoc,
  910.         Y2RefLoc);
  911.         SelectWindow(WindowNdxGlb);
  912.         X1Glb := X1Loc;
  913.         Y1Glb := Y1Loc;
  914.         X2Glb := X2Loc;
  915.         Y2Glb := Y2Loc;
  916.         AxisGlb := false;
  917.       end;
  918.       DirectModeGlb := DirectModeLoc;
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  934.   VERSION : 1.05A
  935.        OS : PC-DOS
  936.      DATE : July 8, 1986                               PAGE : 15/16
  937.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  938.  
  939.  
  940.  
  941.  
  942.     end
  943.     else
  944.       Error(18, 4);
  945.  
  946.   POLYGON DRAWING MODULE, CONTINUED
  947.  
  948.                      <-------------------|
  949.     if Flipped then                      |
  950.       begin                              |
  951.         with World[WorldNdxGlb] do       |
  952.         begin                            |
  953.           Temp := Y1;                    |
  954.           Y1 := Y2;                      |
  955.           Y2 := Temp;                    |------{ ADD THIS BLOCK }
  956.         end;                             |
  957.         SelectWorld(WorldNdxGlb);        |
  958.         SelectWindow(WindowNdxGlb);      |
  959.       end;                               |
  960.                      <-------------------|
  961.   end; { DrawPolygon }
  962.  
  963.                          WINDOW MOVE UPDATE
  964.  
  965.   The following code modifications enable the Turbo Graphix Toolbox
  966.   to properly display text after doing a move window.
  967.  
  968.  
  969.   In the procedure MoveVer in the file WINDOWS.SYS
  970.  
  971.     Change from:
  972.          Y1RefGlb := Y1RefGlb + HeaderSizeGlb
  973.        else
  974.          Y2RefGlb := Y2RefGlb - HeaderSizeGlb;
  975.      end;
  976.    end; { MoveVer }
  977.  
  978.  
  979.     Change to:
  980.          Y1RefGlb := Y1RefGlb + HeaderSizeGlb
  981.        else
  982.          Y2RefGlb := Y2RefGlb - HeaderSizeGlb;
  983.        ReDefineWindow(WindowNdxGlb,  X1RefGlb,  Y1RefGlb, X2RefGlb,
  984.                       Y2RefGlb);    { addition ver. 1.06A }
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.   PRODUCT : TURBO GRAPHIX TOOLBOX                      NUMBER : 175
  1000.   VERSION : 1.05A
  1001.        OS : PC-DOS
  1002.      DATE : July 8, 1986                               PAGE : 16/16
  1003.     TITLE : UPDATE FROM VERSION 1.05A TO 1.06A
  1004.  
  1005.  
  1006.  
  1007.  
  1008.        SelectWindow(WindowNdxGlb);  { addition ver. 1.06A }
  1009.      end;
  1010.    end; { MoveVer }
  1011.  
  1012.   In the procedure MoveHor in the WINDOWS.SYS:
  1013.  
  1014.     Change from:
  1015.       if Top then
  1016.         Y1RefGlb := Y1RefGlb + HeaderSizeGlb
  1017.       else
  1018.         Y2RefGlb := Y2RefGlb - HeaderSizeGlb;
  1019.     end;
  1020.   end; { MoveHor }
  1021.  
  1022.     Change to:
  1023.       if Top then
  1024.         Y1RefGlb := Y1RefGlb + HeaderSizeGlb
  1025.       else
  1026.         Y2RefGlb := Y2RefGlb - HeaderSizeGlb;
  1027.       ReDefineWindow(WindowNdxGlb,  X1RefGlb,  Y1RefGlb,  X2RefGlb,
  1028.                        Y2RefGlb);    { addition ver. 1.06A }
  1029.       SelectWindow(WindowNdxGlb);  { addition ver. 1.06A }
  1030.     end;
  1031.   end; { MoveHor }
  1032.  
  1033.   DISCLAIMER: You have the right to use this technical information subject
  1034.   to the terms of the No-Nonsense License Statement that you received with
  1035.   the Borland product to which this information pertains.
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.